var vm = new Vue({
    el: '#main-container',
    data: function() {
        return {
            setting: {
                data: {
                    simpleData: {
                        enable: true,
                        pIdKey: 'parentId'//根据node节点中的parentId属性来作为pId属性值
                    }
                },
                check:{
                    enable:true,//设置开启节点前面的checkbox
                    //'Y'控制checkbox的选中处理  'p'表示父节点会被级联选中  's':子节点会被级联选中
                    //'N'取消选中处理
                    chkboxType:{'Y':'ps','N':'ps'}
                }
            },
            nodes: [],  //资源树节点数组
            treeObj: {},
            role:{
                offices:null,
                oldOffices:null,
                resources:null,
                oldResources:null
            },
            resources:[],//存放当前角色的原资源数组
            officeNodes:[],//所有公司节点数组
            officeTreeObj:'',//公司树对象
            offices:[],//存放当前角色的授权公司数组
            params:{}
        }
    },
    methods: {
        update: function () {

            let _resources = this.treeObj.getCheckedNodes(true);
            if(_resources!==undefined&&_resources.length!==0){
                if(_resources[0].id===0){
                    _resources.splice(0);
                    // _resources.shift();  //移除首位元素
                }
            }

            //获取需要提交的resources
            this.role.oldResources=/*this.role.resources;*/this.resources;
            this.role.resources=_resources;

            //获取需要提交的offices
            this.role.oldOffices=/*this.role.offices;*/this.offices;
            if(this.officeTreeObj!==''){
                let _offices = this.officeTreeObj.getCheckedNodes(true);
                if(_offices!==undefined&&_offices.length!==0){
                    if(_offices[0].id===0){
                        _offices.splice(0);
                        // _resources.shift();  //移除首位元素
                    }
                }

                this.role.offices = _offices;
            }


            //提交更新
            axios({
                url:'manager/role/doUpdate',
                method:'put',
                data:this.role
            }).then(response => {
                if(response.data.success){
                    //关闭当前窗口需要先获取到当前窗口索引值
                    let index = parent.layer.getFrameIndex(window.name);

                    //绑定成功标记
                    flag = true;
                    parent.layer.flag = flag;
                    // 再通过父窗口layer关闭当前窗口
                    parent.layer.close(index);
                    //在父窗口中提示
                    parent.layer.msg(response.data.msg);
                }else{
                    layer.msg(response.data.msg);
                    flag = false;
                    parent.layer.flag = flag;
                }

            }).catch(function (error) {
                layer.msg(error.message);
            })

        },
        initTree:function(){//初始化ztree
            //获取nodes
            axios({
                url:'manager/menu/selectByRid',
                params:{rid:this.role.id}
            }).then(response => {
                this.nodes = response.data.obj.all;//   所有资源节点赋值
                this.resources = response.data.obj.resources; //当前角色原授权资源
                this.nodes[this.nodes.length]={
                    "id": 0,
                    "name": "所有权限"/*,
                    "checked":true*/
                }//动态设置根节点

                //根据当前树的全部节点中查找到需要设置选中的节点，选中处理  (显示已分配权限)
                for (let i in this.nodes) {
                    for (let j in this.resources) {
                        if(this.nodes[i].id===this.resources[j].id){//找到需要设置选中节点
                            this.nodes[i].checked=true;
                            break;
                        }
                    }
                }

                this.treeObj =   $.fn.zTree.init($("#select-treetreeSelectResEdit"),this.setting,this.nodes);

            }).catch(function (error) {
                layer.msg(error.message);
            })


        },
        initOfficeTree:function(){//初始化ztree
            //根据角色id查询当前角色的已授权所有公司，并且从treeObj中找到对应的节点，设置选中
            //获取nodes
            axios({
                url:'manager/office/selectByRid',
                params:{rid:this.role.id}
            }).then(response => {
                this.officeNodes = response.data.obj.all;//   this.setNodes(.....)
                this.offices=response.data.obj.offices;  //处理已授权office
                this.officeNodes[this.officeNodes.length]={
                    "id": 0,
                    "name": "所有机构"
                }//动态设置根节点

                //查找出需要设置选中的节点 设置选中状态 且 初始化树
                for (let i in this.officeNodes) {
                    for (let j in this.offices) {
                        if(this.officeNodes[i].id===this.offices[j].id){//找到需要设置选中节点
                            this.officeNodes[i].checked=true;
                            break;
                        }
                    }
                }
                this.officeTreeObj =   $.fn.zTree.init($("#select-treetreeSelectOfficeEdit"),this.setting,this.officeNodes);
                $("#treeSelectOfficeEdit").css("display","inline")
            }).catch(function (error) {
                layer.msg(error.message);
            })
        },
        changeDataScope:function () {
            //1.从9改为其他
            if(this.role.dataScope!=='9'){
                $("#treeSelectOfficeEdit").css("display","none")
            }else{
                //2.其他改为9
               //如果树不存在则需要初始化，存在则直接显示
                if(this.officeTreeObj!=''){
                    $("#treeSelectOfficeEdit").css("display","inline")
                }else{
                    this.initOfficeTree();
                }
            }

        }
    },
    created: function () {
        this.role = parent.layer.obj;

    },
    mounted:function(){
        this.initTree();//初始化资源/权限树
        if(this.role.dataScope==='9'){//默认的数据范围是9则是明细设置
            this.initOfficeTree();
        }
    }

});